/*

stats.js - statistikk

*/
var parkStatColors = new Array(['P1','#fff'],
		['P2','#ff0'],
		['P3','#f0f'],
		['P4','#0ff']);

var iBruk = new Array();

// Get the stat parking color used - 'really' initialized from server data
function getParkColor(parkName) {
	for( i=0; i<parkStatColors.length;i++) {
		var test = parkStatColors[i];
		if(parkLocation[i][0] == parkName) {
			return parkStatColors[i][1];
		}
	}
}

//Onoff = true/false   
function ibrukToggle(parkName,onOff) {
    this.parkName = parkName;
    this.on = onOff;
    
    function isOn() {
        return this.on;
    }
    function setActive(isactive) {
        this.on = isactive;
    }
    return this;
}

function isOn(whatParkName) {
	var plass;
    for(plass = 0; plass < iBruk.length; plass++) {
        if(iBruk[plass].parkName==whatParkName) {
            return iBruk[plass].on;//isOn();
        }
    }
    return false; // Default
}

function getToggle(whatParkName) {
	var plass;
    for(plass = 0; plass < iBruk.length; plass++) {
        if(iBruk[plass].parkName==whatParkName) {
            return iBruk[plass];// object
        }
    }
    return null;
}

// Variabler for click detection
var clBredde = 0; // Bredde for hver soyle
var clSoyler = 0; // Antall soyler tegnet
var clArrVist = new Array(); // Array av navn på søyler som vises 
var clArrProtxt = new Array(); // Array med søyler og infotext
// Tegning av søyler - pix offset
var leftMargin = 30;
var rightMargin = 10;
var topMargin = 10;
var botMargin = 10;
var h = 0; // = canvas.height;
var w = 0; // = canvas.width;

// Prototyping function for fast erase 
//Array.prototype.empty() {this.splice(0,this.length);}

// Vis parkerings-statistikk
function visParkStat() {
    
    var content = $("#fillerStats:visible");
    var hei = $("#gpsstat").position().top - $("#togP1").height() - $("#stats").position().top - 130;
    var wei = $("#fillerStats:visible").width();
    
	var canvas = $("#stats")[0];
	
	canvas.height = hei;
	canvas.width = wei;
	
	var ctx = canvas.getContext("2d");
	canvas.width = canvas.width;
	
	h = canvas.height;
	w = canvas.width;
	ctx.strokeStyle = "black";
  	ctx.fillStyle = "white";
  	ctx.lineWidth = 10;
  	ctx.save();
  	
	// Testing - bruk av modell
	var plasser = getParkPlasser();
	var plass;
	var pInfo;
	
	
	var xPos = 0; // Posisjonering av neste akse, relativt fra leftMargin
	
	// Tell over antall plasser som skal vises
	var showAntall = 0; // Totalt antall parkplasser
	var antallHistorikk = -1; // Antall historikk entries
	clArrVist = []; // Reset array med info om viste plasser - fastest method compared to ex. set to 0
	for(plass = 0; plass < plasser.length; plass++) {
		pInfo = getParkInfo(plasser[plass]);
		if(pInfo != null) {
			if(isOn(pInfo[0])) {
				showAntall++;
				clArrVist.push(pInfo[0]);
				if(antallHistorikk<0) {
					var theHist = getParkHistorikk(pInfo[0]); // Få akkumulert historikk for å finne lengde
					antallHistorikk = theHist.length - 2;
				}
			}	
		}
	}
	
	// Vi vet nå antallet parkplasser som skal vises, samt historikk innenfor hver
	clArrProtxt = [showAntall*antallHistorikk]; // Reset infotext for søyler
	
	// Så finner vi søylebredde...
	var bredde = 0;
	bredde = (w-leftMargin-rightMargin)/(showAntall*antallHistorikk);
	clBredde = bredde; // Click detection
	ctx.lineWidth = bredde;
	
	// Vis historikk
	var soyleNum = -1; // Søylenummer for tegning - akkumulerende
	
	for(plass = 0; plass < plasser.length; plass++) {
		pInfo = getParkInfo(plasser[plass]);
		if(pInfo != null) {
			console.log("Stat "+plasser[plass]+" "+pInfo[1]+"/"+pInfo[2]);
	
			//**var theHist = getParkHistorikk(pInfo[0]);
			var histInt = 0;
	
			// Søylefarge
			ctx.strokeStyle = getParkColor(plasser[plass]);
	
			if(isOn(pInfo[0])) {
				// Beregn første startposisjon
				soyleNum++; 
				//xPos = ctx.lineWidth/2 + (plass*ctx.lineWidth) + leftMargin;
				var xPos = bredde/2 + leftMargin + (soyleNum*bredde);
				
	            var beleggPx; // hvor mye belagt (pixel calc)
	            var histVerdi; // Verdien i historikk
	            var theHist = getParkHistorikk(pInfo[0]); // Få aktuell verdi
				var maxPlass = parseInt(pInfo[2]); // Max ledige
				var faktor = (h-topMargin-botMargin)/(maxPlass*1.0); // skaleringsfaktor for antall plasser mot høyden av canvas
	            
				for( j = 2;j<theHist.length;j++ ) {
					histInt = parseInt(theHist[j]);
					beleggPx = faktor * parseInt(theHist[j]);
					
					// Info for klikk
	
					// Sett visningstekst for click
					//clArrProtxt[((xPos-leftMargin)/clBredde) | 0] = (""+histInt+" ledige av "+pInfo[2]+" ("+((100*(histInt/maxPlass))|0)+"%)");
					// Eller for å gjøre det litt penere:
					clArrProtxt[((xPos-leftMargin)/clBredde) | 0] = (histInt==0 ? "Ingen ledige" :(""+histInt+" ledige av "+pInfo[2]+" ("+((100*(histInt/maxPlass))|0)+"%)"));
					
					// Tegn
					ctx.beginPath();
					ctx.moveTo(xPos,h-botMargin);
					ctx.lineTo(xPos,h-botMargin-beleggPx);
					ctx.stroke();
	
					// Hvis det er rom for det - tegn kantlinjer
					if(bredde > 5) {
						ctx.save();
						ctx.strokeStyle = '#000';
						ctx.lineWidth = 1;
						ctx.beginPath();
						ctx.moveTo(xPos-(bredde/2),h-botMargin);
						ctx.lineTo(xPos-(bredde/2),h-botMargin-beleggPx);
						ctx.lineTo(xPos+(bredde/2),h-botMargin-beleggPx);
						ctx.lineTo(xPos+(bredde/2),h-botMargin);
						ctx.stroke();
						ctx.restore();
					}
					
					xPos += (bredde*showAntall); // Øker x-pos med et 'helt sett' søyler 
				}
			}
		}
	}
	
	// Oppdater variabler for click detection
	clSoyler = soyleNum;
	
	// Tegn akser 
	// Vertikal
	ctx.strokeStyle = "red"; 
	ctx.lineWidth = 2;
	ctx.beginPath();
	ctx.moveTo(leftMargin-ctx.lineWidth,h-botMargin);
	ctx.lineTo(leftMargin-ctx.lineWidth,topMargin);
	ctx.stroke();
	
	// for tekster
	//ctx.fillStyle    = '#f00';
	ctx.strokeStyle = "black";
	//ctx.shadowOffsetX=5;
	//ctx.shadowOffsetY=5;
	//ctx.shadowBlur=10;
	ctx.font         = '12px tahoma';
	ctx.textBaseline = 'middle';
	ctx.strokeText  ('0', 3, h-botMargin);
	ctx.strokeText  ('50', 3, h-botMargin-((h-botMargin-topMargin)/2));
	ctx.strokeText  ('100', 3, topMargin);
	
	// 10% merker
	ctx.strokeStyle = "red"; 
	ctx.lineWidth = 1;
	for(i=0;i<101;i+=10) {
		ctx.beginPath();
		ctx.moveTo(leftMargin-ctx.lineWidth,h-botMargin - ((h-botMargin-topMargin)/100.0)*i );
		ctx.lineTo(w,h-botMargin - ((h-botMargin-topMargin)/100.0)*i );
		ctx.stroke();
	}
	
	ctx.restore();
}

// Sett opp toggles for stats-valg
function initStats() {
	var docElm = document.getElementById("parkStatToggles");
	var ixx = $("#parkStatToggles");
	var navn = getParkPlasser();
	
	// Initielt er alle med i diagram
	var plasser = getParkPlasser();
	for(plass = 0; plass < plasser.length; plass++) {
		iBruk.push(new ibrukToggle(plasser[plass],true));
    }

	// Mouse clicks.
	var canvas = document.getElementById("stats");
    canvas.addEventListener("mousedown", getPosition, false);

}

function toggleActive(parkPlace) {
	var docElm = document.getElementById("tog"+parkPlace);
	var togItem = getToggle(parkPlace);
	if(togItem != null) {
    	if(togItem.on) {
    		togItem.on = false;
    		docElm.style.color = "red";
    	} else {
    		togItem.on = true;
    		docElm.style.color = "#ffffff";
    	}
    	visParkStat();
    }
}

// Mouse position click...
function getPosition(event)
{
  var x = new Number();
  var y = new Number();
  var canvas = document.getElementById("stats");

  if (event.x != undefined && event.y != undefined)
  {
    x = event.x;
    y = event.y;
  }
  else // Firefox method to get the position
  {
    x = event.clientX + document.body.scrollLeft +
        document.documentElement.scrollLeft;
    y = event.clientY + document.body.scrollTop +
        document.documentElement.scrollTop;
  }

  x -= canvas.offsetLeft;
  y -= canvas.offsetTop;

  if(x<leftMargin) {
	  return;
  }
  if(x>(w-rightMargin)) {
	  return;
  }

  var soyle = ((x-leftMargin)/clBredde) | 0;
  var ix =  (soyle % (clSoyler+1)); 
  //alert("Søyle nummer "+soyle+" ("+(clSoyler+1)+" sett) Som er ix "+(soyle % (clSoyler+1)));
  var dbg = document.getElementById("debug2");
  //dbg.innerHTML = "(Søyle: "+soyle+" Sett#: "+ix+" = \""+clArrVist[ix]+"\") (Tekst:"+clArrProtxt[soyle]+")";
  dbg.innerHTML = "<strong>"+clArrVist[ix]+" : "+clArrProtxt[soyle]+"</strong>";
}


jQuery(document).ready(function() {
    // init mouse click event
});
